package com.isnmp.common.snmp;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;

import com.isnmp.common.base.MyException;

public abstract interface SNMPAPI extends Remote {
    public static final int RowStatusEntryActive = 1;
    public static final int RowStatusEntryAdd = 4;
    public static final int RowStatusEntryDel = 6;
    public static final String MessageNoSuchOID = Messages.getString("SNMPAPI.0");
    public static final String MessageSNMPTimeOut = Messages.getString("SNMPAPI.1");

    public abstract void checkSnmpAgentActive(SNMPTarget paramSNMPTarget) throws MyException, RemoteException;

    /**
     * 为一个oid 所对应的SNMP中的参数  赋值
     * @param paramString1
     * @param paramString2
     * @param paramString3
     * @param paramSNMPTarget
     * @throws MyException
     * @throws RemoteException
     */
    public abstract void setOIDValue(String paramString1, String paramString2, String paramString3, SNMPTarget paramSNMPTarget) throws MyException, RemoteException;

    /**
     * 根据oid 获取它的值
     * @param paramString
     * @param paramSNMPTarget
     * @return
     * @throws MyException
     * @throws RemoteException
     */
    public abstract String getOIDValue(String paramString, SNMPTarget paramSNMPTarget) throws MyException, RemoteException;

    public abstract long getOIDLongValue(String paramString, SNMPTarget paramSNMPTarget) throws MyException, RemoteException;

    /**
     * 根据oid 获取它的下一个值
     * @param paramString
     * @param paramSNMPTarget
     * @return
     * @throws MyException
     * @throws RemoteException
     */
    public abstract String getNextOIDValue(String paramString, SNMPTarget paramSNMPTarget) throws MyException, RemoteException;

    /**
     * 获取一个MibSystem 值
     * @param paramObject
     * @param paramSNMPTarget
     * @return
     * @throws MyException
     * @throws RemoteException
     */
    public abstract Object getMibObject(Object paramObject, SNMPTarget paramSNMPTarget) throws MyException, RemoteException;

    public abstract void update(Object paramObject, SNMPTarget paramSNMPTarget) throws MyException, RemoteException;

    /**
     * 获取映射类OMMappingInfo的集合
     * @param paramClass
     * @param paramSNMPTarget
     * @return
     * @throws MyException
     * @throws RemoteException
     */
    public abstract List getAllTableData(Class paramClass, SNMPTarget paramSNMPTarget) throws MyException, RemoteException;

    /**
     * 
     * @param paramSNMPTarget
     * @param paramList
     * @return
     * @throws MyException
     */
    public abstract List<List<String>> getAllOIDTableData(SNMPTarget paramSNMPTarget, List<String> paramList) throws MyException;

    public abstract void addTableRow(Object paramObject, SNMPTarget paramSNMPTarget) throws MyException, RemoteException;

    public abstract void delTableRow(Object paramObject, SNMPTarget paramSNMPTarget) throws MyException, RemoteException;
}